package com.hqq.exercise.list;

/**
 * DeleteDuplication 删除链表中重复的结点
 * 题目描述:
 * 在一个排序的链表中，存在重复的结点，请删除该链表中重复的结点，重复的结点不保留，返回链表头指针。
 * 样例输入:
 * {1,2,3,3,4,4,5}
 * 样例输出:
 * {1,2,5}
 * Created by heqianqian on 2017/8/24.
 */
public class DeleteDuplication {

    public static ListNode delDup(ListNode node) {
        /*构建头节点*/
        ListNode head = new ListNode(-1);
        head.next = node;

        /*当前元素*/
        ListNode temp = node;
        /*当前元素的前一个元素*/
        ListNode prev = head;

        while (temp != null && temp.next != null) {
            if (temp.data == temp.next.data) {
                int data = temp.data;
                while (temp != null && temp.data == data) {//排除重复的元素
                    temp = temp.next;
                }
                prev.next = temp;
            } else {
                prev = prev.next;
                temp = temp.next;
            }
        }
        return head.next;
    }
}
